/*************************************************************************
    > File Name: B.sigaction.c
    > Author: Ykk
    > Mail: 3393579535@qq.com 
    > Created Time: 2023年05月03日 星期三 20时14分05秒
 ************************************************************************/

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#include<signal.h>

//信号处理函数
void fun(int signo)
{
	printf("捕捉到的信号 %d\n",signo);
}

//新的信号处理函数
void fun1(int signo,siginfo_t *info,void *context)
{
	printf("捕捉到信号 %d\n",signo);
}
//演示sigaction函数的使用
int main()
{
	int ret = -1;

#if 0
	struct sigaction act;
	//使用旧的信号处理函数指针
	act.sa_handler = fun;
	//标志为默认，默认使用旧的信号处理函数指针
	act.sa_flags = 0;

#else
	struct sigaction act;
	//使用新的信号处理函数指针
	act.sa_sigaction = fun1;
	//标志指定使用新的信号处理函数指针
	act.sa_flags = SA_SIGINFO;

#endif
	//信号注册
	ret = sigaction(SIGINT, &act,NULL);
	if(-1 == ret)
	{
		perror("sigaction");
		return 1;
	}

	printf("按下任意键退出...\n");

	while(1)
	{
		getchar();
	}
	return 0;
}
